#ifndef FASYS_FASYS_ICHANNELS_HPP
#define FASYS_FASYS_ICHANNELS_HPP

#include <string>
#include "message.hpp"
#include "ichannel_observer.hpp"

namespace fasys{

struct ichannels
{
  virtual ~ichannels() {}
  // опубликовать сообщение
  virtual void publish(message& m) = 0;
  // подписаться на канал 
  virtual void subscribe( const std::string& channel, ichannel_observer* obs) = 0;
  // отписаться от канала
  virtual void describe( const std::string& channel, ichannel_observer* obs) = 0;
  // отписаться от всего 
  virtual void describe( ichannel_observer* obs) = 0;
};

}

#endif

